/*
 * @lc app=leetcode.cn id=914 lang=typescript
 *
 * [914] 卡牌分组
 */

// @lc code=start

// FIXME 这个 需要 求最大公约数

const gcd = (x: number, y: number): number => {
    return !x ? y : gcd(y % x, x);
};
function hasGroupsSizeX(deck: number[]): boolean {
    // 统计次数，python 真好
    let cache = new Map<number, number>();
    deck.forEach((i) => {
        cache.set(i, (cache.get(i) || 0) + 1);
    });

    // 求两个数之间的最大公约数
    let count = 0;
    for (const iterator of cache.values()) {
        count = gcd(iterator, count);
    }
    return count >= 2;
}
// @lc code=end
